const { defaultConfig } = require('@share/common');

class GlobalStore {
    /**
     * 设置全局变量
     * @param {string} key - 键名
     * @param {any} value - 值
     */
    static set(key, value) {
        global[key] = value;
    }

    /**
     * 获取全局变量
     * @param {string} key - 键名
     * @returns {any} - 值
     */
    static get(key) {
        return global[key];
    }

    /**
     * 删除全局变量
     * @param {string} key - 键名
     */
    static delete(key) {
        delete global[key];
    }

    /**
     * 检查全局变量是否存在
     * @param {string} key - 键名
     * @returns {boolean} - 是否存在
     */
    static has(key) {
        return global[key] !== undefined;
    }

    /**
     * 获取配置中的端口，如果不存在配置默认返回
     * @returns 
     */
    static getClientPort() {
        const pt = defaultConfig['services']['client'];

        if (!global['config']) return pt;

        if (!global['config']['services']) return pt;

        if (!global['config']['services']['client']) return pt;

        return global['config']['services']['client'];
    }

    /**
     * 获取配置中的端口，如果不存在配置默认返回
     * @returns 
     */
    static getServerPort() {
        const pt = defaultConfig['services']['server'];

        if (!global['config']) return pt;

        if (!global['config']['services']) return pt;

        if (!global['config']['services']['server']) return pt;

        return global['config']['services']['server'];
    }
}

module.exports = GlobalStore;